|
|
1. Формат GIF. Применение и возможности |
|
|
2. Стандарты GIF87a и GIF89a. Особенности и характеристики |
|
|
3. Структура анимированного файла GIF89a |
|
|
5. Оптимизация анимированных GIF-файлов |
Подготовка кадров
Базовые кадры формируются в любом графическом редакторе и сохраняются на диске в формате GIF.
Кадры изготавливают приблизительно по такому же принципу, по которому создается обычная
мультипликация.
Рассмотрим последовательно все шаги создания GIF-анимации на 2-ух характерных примерах.
Картинка 1 - лошадь, которая открывает и закрывает глаза.
Картинка 2 - прыгающий мячик.
В первом случае нам потребуется 3 исходных кадра: лошадь с открытыми, с полузакрытыми и с
закрытыми глазами.


Объединение кадров
В анимированных GIF-файлах кадры выводятся в строгой последовательности, которую нельзя изменить
во время воспроизведения.
Анимация собирается из готовых кадров в любой предназначенной для этого специализированной
программе. Процесс создания прост - вы берете по очереди кадры и добавляете их к своему
GIF-файлу. Затем для каждого кадра и всей анимации в целом, задаете параметры. Для каждого кадра
следует задать задержку, если надо, то локальную палитру, положение на логическом экране и
способ удаления.
Параметры для каждого кадра
- Задержка между кадрами.
Формат GIF 89A позволяет определять задержку между отдельными кадрами (указывается с шагом в 0,01 с (1 мс)), что дает возможность управлять темпом анимации. Задержка - это промежуток времени, в течение которого кадр будет оставаться на экране. Без учета эстетических соображений во многих случаях оказывается, что замедление анимации (или ее ускорение) позволяет снизить общее число кадров в файле. Но следует помнить, что в некоторых версиях браузеров кадры не проигрываются быстрее, чем с задержкой в 34/100 секунды.- Положение на логическом экране.
Для каждого кадра можно задать смещение вниз и влево относительно начала координат логического экрана. Это свойство во многих случаях очень существенно влияет на оптимизацию размера файла.- Способ удаления текущего кадра с экрана.
Существует 4 способа удаления текущего кадра, предусмотренные форматом GIF.- Локальная палитра.
- Не определено. Способ удаления не определен. В большинстве случаев аналогичен способу "не удалять".
- Не удалять. Кадр должен остаться на месте. Это значит, что следующий кадр будет отображен поверх текущего изображения. Такой способ удаления неприемлем для прозрачных анимаций.
- Цвет фона. Восстановление цвета фона. Область, закрываемая кадром, будет заполнена цветом фона. Но если хотя бы один кадр прозрачный, то кадр будет замещен фоновым изображением (фоновым изображением считается первое изображение в цепочке кадров).
- Предыдущее состояние. Восстановление предыдущего изображения. Область, охватываемая кадром, замещается предыдущим изображением.
В подавляющем большинстве случаев первые два способа означают, что кадры не будут исчезать с экрана, и будут отображаться поверх предыдущих кадров, а два последние способа - что предыдущие кадры будут удаляться и на экране отображается только текущий кадр.
Для каждого кадра можно задать локальную палитру. Но следует помнить, что желательно не использовать локальных палитр - такие картинки читаются, но в некоторых случаях это приводит к неправильному изображению цветов. К тому же использование локальных палитр увеличивает размер файла.- Прозрачность.
Задание для кадра прозрачный цвет из текущей палитры. Прозрачным может быть только один цвет.Параметры для всей анимации
- Количество повторов всего ряда кадров.
Повтор последовательности изображений может быть бесконечным или заданное количество раз. В большинстве случаев используют бесконечное повторение анимационного цикла.- Ширина и высота логического экрана.
В GIF-файле можно явно задать ширину и высоту экрана или использовать автоматическое определение размеров экрана. В последнем случае все кадры будут умещаться на экране. Но следует помнить, что если картинка не умещается на логическом экране, это может привести даже к аварийному завершению работы браузера, в лучшем случае - последствия непредсказуемы.- Глобальная палитра для всех кадров.
Рекомендуется использование глобальной палитры для всей анимации в целом.Теперь рассмотрим некоторые существенные теоретические положения на примерах и попробуем поэкспериментировать с нашими заготовками.
Кивающая лошадка.
Для того, чтобы лошадь закрывала и открывала глаза, надо расположить кадры в последовательности
1, 2, 3, 2, т.е. кадр с открытыми глазами, кадр с полузакрытыми, кадр с закрытыми, опять кадр с
полузакрытыми, кадр с открытыми и т.д.
Если картинку делать непрозрачной, то способ удаления может быть любой. Если картинка прозрачная,
то способ удаления имеет принципиальное значение. В первом случае способ удаления для каждого
кадра "Не удалять", во втором - "Предыдущее состояние". Во всех случаях между кадрами одинаковое
время задержки между кадрами и равно 100 мс.
![]() |
![]() |
| Непрозрачный фон. | Прозрачный фон. "Не удалять". |
![]() |
|
| Прозрачный фон. "Предыдущее состояние". |
|
Если задать время задержки первого кадра, например, 300 мс, то лошадка будет более бодрая, а если такую задержку задать для 3-го кадра, то лошадка, наоборот, более сонная.
![]() |
![]() |
| Бодрая лошадь. | Сонная лошадь. |
Варьируя время задержки между кадрами Вы можете добиваться определенных психологических и эстетических эффектов.
Прыгающий мячик.
Рассмотрим пример с мячиком, более характерный пример, т.к. большая часть анимации в Internet
построена на движении какого-либо объекта.
Пусть мячик отскакивает от стенок рамки, в пределах которой он находится. В данном случае у нас
есть 2 исходных файла: фоновая рамка и мячик. При формировании цепочки анимации первым кадром
будет рамка, а следующими: мячик. Но при формировании 2-го и следующих кадров мы будем
использовать важное свойство кадров - смещение вниз и вправо. При подготовке GIF-файла такого
типа следует обратить внимание на то, чтобы подвижный элемент смещался в каждом кадре на равное
расстояние и именно в том направлении, в котором необходимо. Если, например, мячик должен
перемещаться строго по прямой линии, но в одном из кадров Вы разместите его чуть выше или ниже
первоначального положения, траектория его движения получится ломаной, что очень портит впечатление.
Сформируем GIF-файл из 10 кадров, со временем задержки 50 мс. Все кадры, кроме первого, сделаем
прозрачными. Причем для первого кадра зададим способ удаления "не удалять", а все остальные
сделаем прозрачные, способ удаления "предыдущее состояние", и смещения для каждого из
кадров: 1-(0,0); 2 -(23. 23) и т.д.
![]() |
Рис.1 Мячик отскакивает на фоне по стенкам. Способ удаления "Предыдущее состояние". |
| Если кадры с тем же самым смещением расположить в другой последовательности, то мячик уже будет беспорядочно появляться в разных местах. | |
![]() |
Рис.2 Мячик появляется в произвольных местах. |
| Если для рассмотренных выше двух вариантов кадры не удалять, то получается другой эффект. | |
![]() |
Рис.3 Мячик двигается по траектории со шлейфом. |
![]() |
Рис.4 Мячики появляются и не исчезают. |
| Во многих случаях фон не требуется, поэтому аналогичных эффектов можно добиться, не используя фон, т.е. без первого кадра. Для всех кадров способ удаления одинаков. | |
![]() |
В результате наших экспериментов мы на основе всего 2-ух файлов с минимальными изменениями добились 8-разных картинок.
Image Tools Group 2004г.